/**
 * Notes: 研发项目资源模型
 * Ver : CCMiniCloud Framework 2.0.1 ALL RIGHTS RESERVED BY cclinux0730 (wechat)
 * Date: 2023-08-30 19:20:00
 */


const BaseProjectModel = require('./base_project_model.js');

class ResearchResourceModel extends BaseProjectModel {

	/** 构造函数 */
	constructor() {
		super();

		this.setModel('research_project_resource');
	}

	/**
	 * 获取资源列表
	 * @param {*} service 服务
	 * @param {*} where 条件
	 * @param {*} params 参数
	 */
	async getList(service, where, params) {
		let fields = '*';
		let orderBy = 'RESOURCE_ADD_TIME desc';
		let page = params.page || 1;
		let size = params.size || 10;
		let isTotal = params.isTotal || false;
		let oldTotal = params.oldTotal || 0;

		// 搜索关键词
		if (params.search) {
			let newWhere = {
				RESOURCE_NAME: {
					$regex: params.search,
					$options: 'i'
				}
			};
			where = Object.assign(where, newWhere);
		}

		// 资源类型筛选
		if (params.type) {
			where.RESOURCE_TYPE = Number(params.type);
		}

		// 排序
		if (params.sortType && params.sortVal) {
			orderBy = params.sortType + ' ' + params.sortVal;
		}

		return await this.getListOfModel(service, where, fields, orderBy, page, size, isTotal, oldTotal);
	}

	/**
	 * 获取单个资源
	 * @param {*} service 服务
	 * @param {*} id 资源ID
	 */
	async getOne(service, id) {
		return await this.getOneOfModel(service, id);
	}

	/**
	 * 插入数据
	 * @param {*} service 服务
	 * @param {*} data 数据
	 */
	async insert(service, data) {
		return await this.insertOfModel(service, data);
	}

	/**
	 * 更新数据
	 * @param {*} service 服务
	 * @param {*} id 记录ID
	 * @param {*} data 数据
	 */
	async edit(service, id, data) {
		return await this.editOfModel(service, id, data);
	}

	/**
	 * 删除数据
	 * @param {*} service 服务
	 * @param {*} id 记录ID
	 */
	async del(service, id) {
		return await this.delOfModel(service, id);
	}

	/**
	 * 批量删除
	 * @param {*} service 服务
	 * @param {*} ids ID数组
	 */
	async delBatch(service, ids) {
		let where = {
			_id: {
				$in: ids
			}
		}
		return await this.del(where);
	}

	/**
	 * 按项目ID删除资源
	 * @param {*} service 服务
	 * @param {*} projectId 项目ID
	 */
	async delByProjectId(service, projectId) {
		let where = {
			RESOURCE_PROJECT_ID: projectId
		}
		return await this.del(where);
	}
}

module.exports = new ResearchResourceModel(); 